#include "TestFunction.h"
#include <functional>
#include <iostream>

TestFunction::TestFunction()
{

}

int fibonacci(int i)
{
//    std::function<int(int)>fab;
//    fab= [&fab](int i){   //子函数里利用Lambda表达式，但这种情况属于多此一举，看下面的方法，直接fibonacci自己调用自己的实现！
//        switch (i) {
//        case 0:
//        case 1:{      //这里因为类似，可以两个一起合并写。
//            return i; //这里有return了，就不用break了！
//        }
//        default:{
//            return fab(i - 1) + fab(i - 2);
//        }
//        }
//    };
//    return fab(i);//这里要加(i)，对应定义的类型。

    //以下是fibonacci自己调用自己的实现(递归的实现)：

            switch (i) {
            case 0:
            case 1:{      //这里因为类似，可以两个一起合并写。
                return i; //这里有return了，就不用break了！
            }
            default:{
                return fibonacci(i - 1) + fibonacci(i - 2);
            }
            }
}
